package ArrayTest;

import java.util.Arrays;

public class QuickSort1 {
    public static void main(String[] args) {
        int []arr={5,7,3,1,6,9,4,2,8,0};
        quickSort(arr,0,arr.length-1);
        System.out.println(Arrays.toString(arr));
    }
    public static void quickSort(int[] arr,int start,int end){
        int pivot=arr[end];
        int x=start-1;
        //遍历排序
        for (int i = start; i <end ; i++) {
            if (arr[i]<=pivot){
                if (i-x>1){
                    int t=arr[i];
                    arr[i]=arr[x+1];
                    arr[x+1]=t;
                    x++;
                }else{
                    x=i;
                }
            }
        }
        //吧枢纽元放中间
        if(pivot<arr[x+1]){//如果pivot大于等于arr[x+1]说明没有右侧区域，元素全小于pivot
            arr[end]=arr[x+1];
            arr[x+1]=pivot;
        }
        //左侧再递归
        if(x>start){
            quickSort(arr,start,x);
        }
        //右侧再递归
        if (end>x+2){
            quickSort(arr,x+2,end);
        }
    }
}
